import matplotlib.pyplot as plt
import numpy as np

#中文
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False

def demonstrate_continuous_but_not_differentiable():
    """演示连续但不可导的函数例子"""
    x = np.linspace(-2, 2, 1000)
    
    plt.figure(figsize=(15, 5))
    
    # 例子1：绝对值函数（尖点）
    plt.subplot(1, 3, 1)
    y1 = np.abs(x)
    plt.plot(x, y1, 'b-', linewidth=2, label='f(x) = |x|')
    plt.scatter([0], [0], color='red', s=100)
    plt.title('尖点例子: 在x=0处连续但不可导')
    plt.xlabel('x')
    plt.ylabel('f(x)')
    plt.grid(True, alpha=0.3)
    
    # 例子2：立方根函数（垂直切线）
    plt.subplot(1, 3, 2)
    y2 = np.cbrt(x)
    plt.plot(x, y2, 'green', linewidth=2, label='f(x) = ∛x')
    plt.scatter([0], [0], color='red', s=100)
    plt.title('垂直切线例子: 在x=0处连续但不可导')
    plt.xlabel('x')
    plt.ylabel('f(x)')
    plt.grid(True, alpha=0.3)
    
    # 例子3：分段函数（跳跃导数）
    plt.subplot(1, 3, 3)
    y3 = np.piecewise(x, [x < 0, x >= 0], [lambda x: x**2, lambda x: x])
    plt.plot(x, y3, 'purple', linewidth=2, label='分段函数')
    plt.scatter([0], [0], color='red', s=100)
    plt.title('分段函数: 在x=0处连续但不可导')
    plt.xlabel('x')
    plt.ylabel('f(x)')
    plt.grid(True, alpha=0.3)
    
    plt.tight_layout()
    plt.show()

demonstrate_continuous_but_not_differentiable()